package com.lowan.iot.mqtt.sdk;

import com.lowan.iot.mqtt.sdk.init.InitExample;
import com.lowan.lib.mqtt.MqttPublisherPool;
import lombok.extern.slf4j.Slf4j;

/**
 * @author y_sp
 * @date 2022 一月
 * <p>
 * mqtt 发布 示例
 * 文档参照 @see https://doc.lowaniot.com/#/platform-access/MQTT-subscribe.html
 */
@Slf4j
public class PublishExample {

    /** 格式：罗万智联平台暂不支持接收数据 */
    private static final String TOPIC = "topic";

    /** 推送数据建议使用标准json格式 */
    private static final String DATA = "{}";

    public PublishExample() {
        // mqtt init
        InitExample.builder();
    }

    /**
     * 功能描述:推送Mqtt数据实例代码
     */
    public void publish() {

        // 调用 MqttPublisherPool 提供 publish发布消息
        if (MqttPublisherPool.publish(TOPIC, DATA)) {
            log.info("Send data success : {}", DATA);
        } else {
            // 重试
            while (true) {
                if (MqttPublisherPool.publish(TOPIC, DATA)) {
                    log.info("ReSend data success : {}", DATA);
                    break;
                }
                log.warn("ReSend data faild : {}", DATA);
            }
        }
    }

    public static void main(String[] args) {
        // 发送消息
        PublishExample publishInstance = new PublishExample();
        publishInstance.publish();
    }
}
